/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package logica;

import hibernate.objeto.Cie9mc;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
import java.util.Vector;
import org.hibernate.tool.hbm2x.StringUtils;
import presentacion.CapaPresentacion;

/**
 *
 * @author Administrador
 */
public class CapaLogica {

    public static final String SEPARADOR = "---------------\n";
    public static final String DIRECTORIO_DE_TRABAJO = crearDirectorioDeTrabajo();

    private static String crearDirectorioDeTrabajo() {
        String fileName = new File(CapaPresentacion.class.
                getProtectionDomain().getCodeSource().getLocation().getPath()).
                getParent().replaceAll("%20", " ");
        String directorioDeTrabajo = fileName + "\\workspace";

        new File(reemplazarUnaBarraInvertidaPorDosBarrasInvertidas(
                directorioDeTrabajo)).mkdir();
        return directorioDeTrabajo;
    }

    /**
     * Retorna el archivo de la base de datos.
     *
     * @param rutaLocal La ruta local
     * @param archivoBD Los datos binarios de la bd
     * @return El archivo para ser manipulado
     */
    public static File byteArrayToFile(String rutaLocal, byte[] archivoBD) {
        if (archivoBD == null) {
            return null;
        }
        
        try {
            FileOutputStream out;

            //Lo crea
            out = new FileOutputStream(rutaLocal);
            out.write(archivoBD);
            out.flush();
            out.close();
            File file = new File(rutaLocal);
            return file;
        } catch (IOException ex) {
            System.err.println(ex.getMessage());
            return null;
        }
    }

    /**
     * Elimina todos los archivos que se crearon a lo largo de la ejecución del
     * programa.
     *
     */
    public static void eliminarArchivosTemporales() {
        File directory = new File(CapaLogica.DIRECTORIO_DE_TRABAJO);
        // Get all files in directory
        File[] files = directory.listFiles();
        for (File file : files) {
            // Delete each file
            if (!file.delete()) {
                //Failed to delete file
                System.out.println("Failed to delete " + file);
            }
        }
    }

    //PACIENTE
    public static final int PERSONA_TIPO_DE_DOCUMENTO = 0;
    public static final int PERSONA_NUMERO_DE_DOCUMENTO = 1;
    public static final int PERSONA_NOMBRE = 2;
    public static final int PERSONA_APELLIDO = 3;
    public static final int PERSONA_FECHA_DE_NACIMIENTO = 4;
    public static final int PACIENTE_SEXO = 5;
    public static final int PACIENTE_ESTADO_CIVIL = 6;
    public static final int PACIENTE_OCUPACION = 7;
    public static final int PACIENTE_GRUPO_SANGUINEO = 8;
    public static final int PACIENTE_FACTOR_SANGUINEO = 9;
    public static final int PACIENTE_OBRA_SOCIAL = 10;
    public static final int PACIENTE_NUMERO_AFILIACION_OBRA_SOCIAL = 11;
    public static final int PACIENTE_FOTO = 12;
    public static final int PERSONA_TELEFONO_PARTICULAR = 13;
    public static final int PERSONA_TELEFONO_MOVIL = 14;
    public static final int PERSONA_CORREO_ELECTRONICO = 15;
    public static final int PACIENTE_RESIDE_EN_EL_EXTRANJERO = 16;
    public static final int PACIENTE_DOMICILIO = 17;
    public static final int PACIENTE_PROVINCIA = 18;
    public static final int PACIENTE_LOCALIDAD = 19;
    public static final int PACIENTE_CODIGO_POSTAL = 20;
    public static final int PACIENTE_PERSONA_DE_CONTACTO = 21;
    public static final int PACIENTE_VINCULO_PERSONA_DE_CONTACTO = 22;
    public static final int PACIENTE_TUTOR = 23;

    //FICHA MORTALIDAD
    public static final int FICHA_MORTALIDAD_HORA_DE_MUERTE = 0;
    public static final int FICHA_MORTALIDAD_FECHA_DE_MUERTE = 1;
    public static final int FICHA_MORTALIDAD_LUGAR_DE_MUERTE = 2;
    public static final int FICHA_MORTALIDAD_TEXTO_A = 3;
    public static final int FICHA_MORTALIDAD_TEXTO_B = 4;
    public static final int FICHA_MORTALIDAD_TEXTO_C = 5;
    public static final int FICHA_MORTALIDAD_TEXTO_D = 6;
    public static final int FICHA_MORTALIDAD_TEXTO_E = 7;
    public static final int FICHA_MORTALIDAD_TEXTO_F = 8;
    public static final int FICHA_MORTALIDAD_TEXTO_G = 9;
    public static final int FICHA_MORTALIDAD_TEXTO_H = 10;
    public static final int FICHA_MORTALIDAD_FORMA_DE_MUERTE = 11;
    public static final int FICHA_MORTALIDAD_DONANTE = 12;

    //INFORMACION SOCIAL
    public static final int INFORMACION_SOCIAL_NIVEL_DE_ENSEÑANZA = 0;
    public static final int INFORMACION_SOCIAL_INGRESOS_GRUPO_CONVIVIENTE = 1;
    public static final int INFORMACION_SOCIAL_CANTIDAD_DE_CONVIVIENTES = 2;
    public static final int INFORMACION_SOCIAL_GRUPO_CONVIVIENTE_RELACION = 0;
    public static final int INFORMACION_SOCIAL_GRUPO_CONVIVIENTE_OCUPACION = 1;

    //MEDICACION
    public static final int MEDICAMENTO_NOMBRE_COMERCIAL = 0;
    public static final int MEDICAMENTO_PRINCIPIO_ACTIVO = 1;
    public static final int MEDICAMENTO_GRUPO_TERAPEUTICO = 2;
    public static final int MEDICAMENTO_LABORATORIO = 3;
    public static final int MEDICAMENTO_COMPOSICION_NOMBRE_COMERCIAL = 4;
    public static final int MEDICAMENTO_PRESENTACION_NOMBRE_COMERCIAL = 5;
    public static final int MEDICAMENTO_CONTRAINDICACIONES_NOMBRE_COMERCIAL = 6;
    public static final int MEDICAMENTO_DOSIFICACION_NOMBRE_COMERCIAL = 7;
    public static final int MEDICAMENTO_INDICACIONES_NOMBRE_COMERCIAL = 8;
    public static final int MEDICAMENTO_ACCION_TERAPEUTICA_NOMBRE_COMERCIAL = 9;
    public static final int MEDICAMENTO_CONTRAINDICACIONES_PRINCIPIO_ACTIVO = 10;
    public static final int MEDICAMENTO_PRECAUCIONES_PRINCIPIO_ACTIVO = 11;
    public static final int MEDICAMENTO_EMBARAZO_Y_LACTANCIA_PRINCIPIO_ACTIVO = 12;
    public static final int MEDICAMENTO_INTERACCIONES_PRINCIPIO_ACTIVO = 13;

    //ANTECEDENTE ENFERMEDAD
    public static final int ANTECEDENTE_ENFERMEDAD_PARENTEZCO = 0;
    public static final int ANTECEDENTE_ENFERMEDAD_FECHA = 1;
    public static final int ANTECEDENTE_ENFERMEDAD_CIE9MC = 2;
    public static final int ANTECEDENTE_ENFERMEDAD_INFORMACION_COMPLEMENTARIA = 3;
    public static final int ANTECEDENTE_ENFERMEDAD_OTROS_ANTECEDENTES = 4;

    //ANTECEDENTE HABITO
    public static final int ANTECEDENTE_HABITO_ALIMENTACION_CANTIDAD = 0;
    public static final int ANTECEDENTE_HABITO_ALIMENTACION_CALIDAD = 1;
    public static final int ANTECEDENTE_HABITO_ALIMENTACION_DIETA = 2;
    public static final int ANTECEDENTE_HABITO_ALCOHOL = 3;
    public static final int ANTECEDENTE_HABITO_FUMA = 4;
    public static final int ANTECEDENTE_HABITO_INFUSIONES = 5;
    public static final int ANTECEDENTE_HABITO_SAL = 6;
    public static final int ANTECEDENTE_HABITO_ACTIVIDAD_FISICA = 7;
    public static final int ANTECEDENTE_HABITO_SEX_ACTIVIDAD = 8;
    public static final int ANTECEDENTE_HABITO_SEX_NUMERO_PAREJAS = 9;
    public static final int ANTECEDENTE_HABITO_ADICCIONES_INAHALATORIA = 10;
    public static final int ANTECEDENTE_HABITO_ADICCIONES_ENDOVENOSAS = 11;
    public static final int ANTECEDENTE_HABITO_ADICCIONES_MARIHUANA = 12;
    public static final int ANTECEDENTE_HABITO_NOTAS_ADICIONALES = 13;

    //ANTECEDENTE HABITACIONAL
    public static final int ANTECEDENTE_HABITACIONAL_COHABITA_CON = 0;
    public static final int ANTECEDENTE_HABITACIONAL_AMBIENTES_TOTALES = 1;
    public static final int ANTECEDENTE_HABITACIONAL_PISOS_DE = 2;
    public static final int ANTECEDENTE_HABITACIONAL_PAREDES_DE = 3;
    public static final int ANTECEDENTE_HABITACIONAL_TECHOS_DE = 4;
    public static final int ANTECEDENTE_HABITACIONAL_AGUA_CORRIENTE = 5;
    public static final int ANTECEDENTE_HABITACIONAL_ELECTRICIDAD = 6;
    public static final int ANTECEDENTE_HABITACIONAL_CLOACAS = 7;
    public static final int ANTECEDENTE_HABITACIONAL_MASCOTAS = 8;
    public static final int ANTECEDENTE_HABITACIONAL_CUCARACHAS = 9;
    public static final int ANTECEDENTE_HABITACIONAL_CHAGAS = 10;

    //ANTECEDENTE OCUPACIONAL
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_1 = 0;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_2 = 1;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_3 = 2;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_4 = 3;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_5 = 4;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_6 = 5;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_7 = 6;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_8 = 7;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_9 = 8;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_10 = 9;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_11 = 10;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_12 = 11;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_13 = 12;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_14 = 13;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_15 = 14;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_16 = 15;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_17 = 16;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_18 = 17;
    public static final int ANTECEDENTE_OCUPACIONAL_INORGANICOS_19 = 18;
    public static final int ANTECEDENTE_OCUPACIONAL_GASES = 19;
    public static final int ANTECEDENTE_OCUPACIONAL_ORGANICOS = 20;
    public static final int ANTECEDENTE_OCUPACIONAL_TAREAS_RURALES = 21;
    public static final int ANTECEDENTE_OCUPACIONAL_ASMA = 22;
    public static final int ANTECEDENTE_OCUPACIONAL_OTRAS_ENFERMEDADES = 23;

    //FARMACOLOGICO (Se usa en Antecedentes y en Tratamientos)
    public static final int FARMACOLOGICO_HORA = 0;
    public static final int FARMACOLOGICO_FECHA = 1;
    public static final int FARMACOLOGICO_NOMBRE_COMERCIAL_MEDICAMENTO = 2;
    public static final int FARMACOLOGICO_DOSIS = 3;
    public static final int FARMACOLOGICO_INTERVALO = 4;
    public static final int FARMACOLOGICO_DURACION = 5;
    public static final int FARMACOLOGICO_EFECTIVO = 6;
    public static final int FARMACOLOGICO_EFECTO_ADVERSO = 7;
    public static final int FARMACOLOGICO_COMENTARIOS = 8;
    public static final int FARMACOLOGICO_ESTADO = 9;

     //NO FARMACOLOGICO (Se usa en Tratamientos)
    public static final int NO_FARMACOLOGICO_HORA = 0;
    public static final int NO_FARMACOLOGICO_FECHA = 1;
    public static final int NO_FARMACOLOGICO_DESCRIPCION = 2;
    public static final int NO_FARMACOLOGICO_ESTADO = 3;

    //VACUNA
    public static final int VACUNA_NOMBRE = 0;
    public static final int VACUNA_RECIEN_NACIDO = 1;
    public static final int VACUNA_DOS_MESES = 2;
    public static final int VACUNA_CUATRO_MESES = 3;
    public static final int VACUNA_SEIS_MESES = 4;
    public static final int VACUNA_DOCE_MESES = 5;
    public static final int VACUNA_DIECIOCHO_MESES = 6;
    public static final int VACUNA_SEIS_ANIOS = 7;
    public static final int VACUNA_ONCE_ANIOS = 8;
    public static final int VACUNA_QUINCE_ANIOS = 9;
    public static final int VACUNA_DIECISEIS_ANIOS = 10;
    public static final int VACUNA_CADA_DIEZ_ANIOS = 11;
    public static final int VACUNA_PUERPERIO_O_POST_ABORTO_INMEDIATO = 12;

    //APLICACIÓN VACUNA
    public static final int APLICACIÓN_VACUNA_FECHA = 0;
    public static final int APLICACIÓN_VACUNA_ES_ANTECEDENTE = 1;
    public static final int APLICACIÓN_VACUNA_NOMBRE_MEDICAMENTO = 2;
    public static final int APLICACIÓN_VACUNA_PERIODO_APLICACION = 3;
    public static final int APLICACIÓN_VACUNA_LOTE = 4;
    public static final int APLICACIÓN_VACUNA_PARTIDA = 5;
    public static final int APLICACIÓN_VACUNA_ANIO = 6;
    public static final int APLICACIÓN_VACUNA_MES = 7;

    //REASIGNACION CONTACTO
    public static final int REASIGNACION_CONTACTO_OBJETO_PACIENTE = 0;
    public static final int REASIGNACION_CONTACTO_VINCULO_PERSONA_DE_CONTACTO = 1;
    public static final int REASIGNACION_CONTACTO_OBJETO_PERSONA_DE_CONTACTO = 2;
    public static final int REASIGNACION_CONTACTO_OBJETO_TUTOR = 3;
    public static final int REASIGNACION_CONTACTO_ES_VALIDO = 4;

    //ENFERMEDAD Y DIAGNOSTICO AMBULATORIO
    public static final int ENFERMEDAD_Y_DIAGNOSTICO_AMBULATORIO_HORA = 0;
    public static final int ENFERMEDAD_Y_DIAGNOSTICO_AMBULATORIO_FECHA = 1;
    public static final int ENFERMEDAD_Y_DIAGNOSTICO_AMBULATORIO_CIE9MC = 2;
    public static final int ENFERMEDAD_Y_DIAGNOSTICO_AMBULATORIO_DIAGNOSTICO = 3;
    public static final int ENFERMEDAD_Y_DIAGNOSTICO_AMBULATORIO_DESCRIPCION_DIAGNOSTICO = 4;

    //DIAGNOSTICO Y TRIAGE INTERNACION
    public static final int DIAGNOSTICO_Y_TRIAGE_INTERNACION_HORA = 0;
    public static final int DIAGNOSTICO_Y_TRIAGE_INTERNACION_FECHA = 1;
    public static final int DIAGNOSTICO_Y_TRIAGE_INTERNACION_DIAGNOSTICO = 2;
    public static final int DIAGNOSTICO_Y_TRIAGE_INTERNACION_DESCRIPCION_DIAGNOSTICO = 3;
    //Se usan también los signos vitales
    public static final int TRIAGE_TIEMPO_DOLOR_TORACICO = 16;
    public static final int TRIAGE_INCONCIENTE = 17;
    public static final int TRIAGE_EXCITADO = 18;
    public static final int TRIAGE_SANGRADO_ACTIVO = 19;
    public static final int TRIAGE_TOMA_SINTROM = 20;
    public static final int TRIAGE_CRISIS_CONVULSIVA = 21;
    public static final int TRIAGE_TEC = 22;
    public static final int TRIAGE_CIANOSIS = 23;
    public static final int TRIAGE_RELLENO_CAPILAR = 24;

    //EPICRISIS INTERNACION
    public static final int EPICRISIS_INTERNACION_HORA = 0;
    public static final int EPICRISIS_INTERNACION_FECHA = 1;
    public static final int EPICRISIS_INTERNACION_CIE9MC = 2;
    public static final int EPICRISIS_INTERNACION_NOMBRE_PROFESIONAL = 3;
    public static final int EPICRISIS_INTERNACION_APELLIDO_PROFESIONAL = 4;
    public static final int EPICRISIS_INTERNACION_INFORMACION_COMPLEMENTARIA = 5;

    //INTERCONSULTA AMBULATORIO
    public static final int INTERCONSULTA_HORA = 0;
    public static final int INTERCONSULTA_FECHA = 1;
    public static final int
            INTERCONSULTA_INFORMACION_COMPLEMENTARIA_DIAGNOSTICO = 2;
    public static final int INTERCONSULTA_DIAGNOSTICO = 3;
    public static final int INTERCONSULTA_NOMBRE_PROFESIONAL = 4;
    public static final int INTERCONSULTA_APELLIDO_PROFESIONAL = 5;
    public static final int INTERCONSULTA_ESPECIALIDAD_PROFESIONAL = 6;

    //EVOLUCION
    public static final int EVOLUCION_HORA = 0;
    public static final int EVOLUCION_FECHA = 1;
    public static final int EVOLUCION_DESCRIPCION = 2;
    public static final int EVOLUCION_APELLIDO_PROFESIONAL = 3;
    public static final int EVOLUCION_NOMBRE_PROFESIONAL = 4;

    //EVOLUCION ENFERMERIA DE INTERNACION
    public static final int EVOLUCION_ENFERMERIA_DE_INTERNACION_HORA = 0;
    public static final int EVOLUCION_ENFERMERIA_DE_INTERNACION_FECHA = 1;
    public static final int EVOLUCION_ENFERMERIA_DE_INTERNACION_DESCRIPCION = 2;
    public static final int EVOLUCION_ENFERMERIA_DE_INTERNACION_APELLIDO_PROFESIONAL = 3;
    public static final int EVOLUCION_ENFERMERIA_DE_INTERNACION_NOMBRE_PROFESIONAL = 4;

    //EXAMEN FISICO
    public static final int EXAMEN_FISICO_PESO = 0;
    public static final int EXAMEN_FISICO_ALTURA = 1;
    public static final int EXAMEN_FISICO_BMI = 2;
    public static final int EXAMEN_FISICO_GRADO = 3;
    public static final int EXAMEN_FISICO_BSA = 4;
    public static final int EXAMEN_FISICO_PERIMETRO_CEFALICO = 5;
    public static final int EXAMEN_FISICO_PERIMETRO_ABDOMINAL = 6;
    public static final int SIGNOS_VITALES_TENSION_ARTERIAL_SISTOLICA = 7;
    public static final int SIGNOS_VITALES_TENSION_ARTERIAL_DIASTOLICA = 8;
    public static final int SIGNOS_VITALES_FRECUENCIA_CARDIACA = 9;
    public static final int SIGNOS_VITALES_FRECUENCIA_RESPIRATORIA = 10;
    public static final int SIGNOS_VITALES_SATURACION_OXIGENO = 11;
    public static final int SIGNOS_VITALES_TEMPERATURA = 12;
    public static final int SIGNOS_VITALES_EVA = 13;
    public static final int SIGNOS_VITALES_GLUCEMIA = 14;
    public static final int SIGNOS_VITALES_TIEMPO_FOCO_NEUROLOGICO = 15;
    public static final int EXAMEN_FISICO_COMENTARIOS = 16;

    //CIE9MC
    public static final int CIE9MC_NOMBRE = 0;
    public static final int CIE9MC_CLASIFICACION = 1;
    public static final int CIE9MC_AREA = 2;

    //EXAMEN COMPLEMENTARIO
    public static final int EXAMEN_COMPLEMENTARIO_HORA = 0;
    public static final int EXAMEN_COMPLEMENTARIO_FECHA = 1;
    public static final int EXAMEN_COMPLEMENTARIO_ORIGEN = 2;
    public static final int EXAMEN_COMPLEMENTARIO_AREA = 3;
    public static final int EXAMEN_COMPLEMENTARIO_NOMBRE = 4;
    public static final int EXAMEN_COMPLEMENTARIO_PROTOCOLO = 5;
    public static final int EXAMEN_COMPLEMENTARIO_ADJUNTO = 6;
    public static final int EXAMEN_COMPLEMENTARIO_DETALLE = 7;

    //ESTUDIO CARDIOLOGIA
    public static final int ESTUDIO_CARDIOLOGIA_NOMBRE = 0;
    public static final int ESTUDIO_CARDIOLOGIA_ECG = 1;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA = 2;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA = 3;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS = 4;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER = 5;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION = 6;
    public static final int ESTUDIO_CARDIOLOGIA_TILT_TEST = 7;
    public static final int ESTUDIO_CARDIOLOGIA_ELECTROFISIOLOGICO = 8;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA = 9;
    public static final int ESTUDIO_CARDIOLOGIA_ECG_COMENTARIOS = 10;
    public static final int ESTUDIO_CARDIOLOGIA_ECG_EJE = 11;
    public static final int ESTUDIO_CARDIOLOGIA_ECG_FC = 12;
    public static final int ESTUDIO_CARDIOLOGIA_ECG_PR = 13;
    public static final int ESTUDIO_CARDIOLOGIA_ECG_QRS = 14;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_AI = 15;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_CONCLUSIONES = 16;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_DDVI = 17;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_DSVI = 18;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_ETE = 19;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_ETT = 20;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_FA = 21;
    public static final int ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_FEY = 22;
    public static final int
            ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_FUNCION_GLOGAL_DEL_VI = 23;
    public static final int
            ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_MOTILIDAD_PARIETAL = 24;
    public static final int
            ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA_VALVULAS = 25;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_ANGOR = 26;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_FC_BASAL = 27;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_FC_MAXIMO_ESFUERZO = 28;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_METODO = 29;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_PROTOCOLO = 30;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_SEGMENTO_ST = 31;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_TENSION_ARTERIAL_BASAL_DIASTOLICA = 32;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_TENSION_ARTERIAL_BASAL_SISTOLICA = 33;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_TENSION_ARTERIAL_MAXIMO_ESFUERZO_DIASTOLICA = 34;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_TENSION_ARTERIAL_MAXIMO_ESFUERZO_SISTOLICA = 35;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_MAXIMO_ESFUERZO_UNIDADES = 36;
    public static final int ESTUDIO_CARDIOLOGIA_ERGOMETRIA_MAXIMO_ESFUERZO_VALOR = 37;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_ANGOR = 38;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_APREMIO = 39;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_ECO_BASAL = 40;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_ECO_MAXIMA_CARGA = 41;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_FC_BASAL = 42;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_SEGMENTO_ST = 43;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_TENSION_ARTERIAL_BASAL_DIASTOLICA = 44;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_TENSION_ARTERIAL_BASAL_SISTOLICA = 45;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_TENSION_ARTERIAL_MAXIMO_ESFUERZO_DIASTOLICA = 46;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_TENSION_ARTERIAL_MAXIMO_ESFUERZO_SISTOLICA = 47;
    public static final int ESTUDIO_CARDIOLOGIA_ECOESTRESS_CONCLUSIONES = 48;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DURACION_EN_HORAS = 49;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_FC_PROMEDIO = 50;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_FC_MAXIMO = 51;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_FC_MINIMO = 52;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_ES_SV = 53;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_ES_V = 54;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_TRASTORNO_DEL_ST = 55;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_CONCLUSIONES = 56;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_DURACION_EN_HORAS = 57;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_CONCLUSIONES = 58;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_TENSION_ARTERIAL_PROMEDIO = 59;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_TENSION_ARTERIAL_MAXIMA = 60;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_TENSION_ARTERIAL_MINIMA = 61;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_TENSION_ARTERIAL_SISTOLICA = 62;
    public static final int ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION_TENSION_ARTERIAL_DIASTOLICA = 63;
    public static final int ESTUDIO_CARDIOLOGIA_TILT_TEST_METODO = 64;
    public static final int ESTUDIO_CARDIOLOGIA_TILT_TEST_RESULTADO = 65;
    public static final int ESTUDIO_CARDIOLOGIA_ELECTROFISIOLOGICO_CONCLUSIONES = 66;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_PRESION_EN_AORTA_DIASTOLICA = 67;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_PRESION_EN_AORTA_SISTOLICA = 68;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_PRESION_EN_VI_DIASTOLICA = 69;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_PRESION_EN_VI_SISTOLICA = 70;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_TRONCO_CORONARIA_IZQUIERDA = 71;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_TRONCO_CORONARIA_DERECHA = 72;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_TRONCO_CIRCUNFLEJA = 73;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_TRONCO_DESCENDENTE_ANTERIOR = 74;
    public static final int ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA_VENTRICULAR_IZQUIERDA = 75;

    //ESTUDIO LABORATORIO
    public static final int ESTUDIO_LABORATORIO_BIOQUIMICO = 0;
    public static final int ESTUDIO_LABORATORIO_PROTOCOLO = 1;
    public static final int ESTUDIO_LABORATORIO_COMENTARIOS = 2;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_ANALISIS_STRING = 0;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_TIPO_STRING = 1;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_UNIDADES = 2;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_SISTEMA = 3;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_VALOR = 4;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_VALORES_DE_REFERENCIA = 5;
    public static final int ESTUDIO_LABORATORIO_DETERMINACIONES_TIPO = 6;

    //USUARIO
    public static final int USUARIO_ES_ADMINISTRADOR = 5;
    public static final int USUARIO_NOMBRE_DE_USUARIO = 6;
    public static final int USUARIO_CLAVE = 7;
    public static final int USUARIO_TIPO_DE_ACCESO = 8;
    public static final int USUARIO_MATRICULA_MEDICA = 9;
    public static final int USUARIO_TELEFONO_INTERNO = 10;
    public static final int USUARIO_COMENTARIOS = 11;

    //TRATAMIENTO Y PRACTICA
    public static final int TRATAMIENTO_Y_PRACTICA_HORA = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_FECHA = 1;
    public static final int TRATAMIENTO_Y_PRACTICA_TIPO = 2;

    //TRATAMIENTO Y PRACTICA. TRATAMIENTO_QUIRURGICO
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_HORA_INICIO = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_FECHA_INICIO = 1;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_HORA_FIN = 2;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_FECHA_FIN = 3;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_NUMERO_QUIROFANO = 4;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_URGENTE = 5;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_DESCRIPCION = 6;

    //TRATAMIENTO Y PRACTICA. TRATAMIENTO_QUIRURGICO_PROFESIONALES
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_NOMBRE_PROFESIONAL = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_TRATAMIENTO_QUIRURGICO_APELLIDO_PROFESIONAL = 1;

    //TRATAMIENTO Y PRACTICA. CUIDADOS_DE_INTERNACION. BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_TPO = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_VELOCIDAD = 1;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_CANTIDAD = 2;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_ALIMENTACION_ENTERAL = 3;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_UBICACION = 4;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_DISPOSICION_CANTIDAD = 5;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_HORA_COLOCACION = 6;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_FECHA_COLOCACION = 7;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_CONCLUSIONES_COLOCACION = 8;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_HORA_REMOCION = 9;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_FECHA_REMOCION = 10;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADOS_DE_INTERNACION_BALANCE_HIDROELECTROLITICO_INGRESO_O_EGRESO_CONCLUSIONES_REMOCION = 11;

    //TRATAMIENTO Y PRACTICA. CUIDADO DE INTERNACION
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_TIPO = 0;

    //TRATAMIENTO Y PRACTICA. CUIDADO DE INTERNACION. CUIDADOS Y MEDICIONES.
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_ADPVC = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_PCP = 1;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_VM = 2;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_SO_O2 = 3;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_SV_O2 = 4;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_S_MONITOREO_HEMODINAMICO = 5;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_D_MONITOREO_HEMODINAMICO = 6;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_ME_MONITOREO_HEMODINAMICO = 7;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_FC = 8;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_FR = 9;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_AX = 10;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_C = 11;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_S_SIGNOS_VITALES = 12;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_D_SIGNOS_VITALES = 13;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_ME_SIGNOS_VITALES = 14;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_FI_O2 = 15;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_PEEP = 16;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_CONTROL_VOL = 17;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_CONTROL_PR = 18;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_TUBO_EN_T = 19;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_PUPILAS = 20;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_PIC = 21;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_HGT = 22;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_OJOS = 23;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_RESP_VERBAL = 24;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_RESP_MOTORA = 25;

    //TRATAMIENTO Y PRACTICA. CUIDADO DE INTERNACION. CUIDADOS Y MEDICIONES. CUIDADOS
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_CUIDADO_TIPO = 0;
    public static final int TRATAMIENTO_Y_PRACTICA_CUIDADO_DE_INTERNACION_CUIDADOS_Y_MEDICIONES_CUIDADO_CONCLUSIONES = 1;

    //PAGINADOR
    public static final int PAGINADOR_PAGINADORES_SIMULTANEOS = 3;
    public static final int PAGINADOR_GESTION_MEDICAMENTO_TAMANIO_TABLA_MEDICAMENTOS = 10;
    public static final int PAGINADOR_GESTION_MEDICAMENTO_TAMANIO_TABLA_NOMBRES_COMERCIALES = 10;
    
    //FARMACOLOGICO (Se usa en Antecedentes y en Tratamientos)
    public static final int CARGA_DOCUMENTO_HORA = 0;
    public static final int CARGA_DOCUMENTO_FECHA = 1;
    public static final int CARGA_DOCUMENTO_NOMBRE = 2;
    public static final int CARGA_DOCUMENTO_NOMBRE_AUTOR = 3;
    public static final int CARGA_DOCUMENTO_APELLIDO_AUTOR = 4;
    public static final int CARGA_DOCUMENTO_ADJUNTO = 5;
    public static final int CARGA_DOCUMENTO_COMENTARIOS = 6;
    public static final int CARGA_DOCUMENTO_TIPO = 7;

    /**
     * Convierte la primera letra de cada palabra en mayúsculas.

     * @param str La cadena a convertir
     * @return La cadena convertida
     */
    public static String capitalizeFirstLetter(String str) {
        String salida = "";
        char ch;       // One of the characters in str.
        char prevCh;   // The character that comes before ch in the string.
        int i;         // A position in str, from 0 to str.length()-1.
        prevCh = '.';  // Prime the loop with any non-letter character.
        for ( i = 0;  i < str.length();  i++ ) {
            ch = str.charAt(i);
            if (Character.isLetter(ch) && !Character.isLetter(prevCh))
                salida = salida + Character.toUpperCase(ch);
            else
                salida = salida + ch;
            prevCh = ch;  // prevCh for next iteration is ch.
        }
        return salida;
    }

    /**
     * Elimina los espacios muertos de una frase. Pueden existir adelante de
     * la palabra, en el medio de la misma o detras de ella.
     *
     * @param frase La frase a la que se le eliminarán los espacion muertos
     * @return El string frase sin espacios muertos
     */
    public static String eliminarEspaciosMuertos(String frase) {
        //Se crea un String que no contendrá espacios muertos
        String fraseSinEspaciosMuertos = "";
        //Se crea un vector que contendrá las palabras de la frase
        Vector<String> palabrasDeLaFrase = new Vector<String>();
        //Se separa en palabras si es que existen
        StringTokenizer tokens = new StringTokenizer(frase);

        //Se trabaja por cada palabra
        while (tokens.hasMoreTokens()) {
            palabrasDeLaFrase.add(tokens.nextToken());
        }
        //Se carga la frase siempre que la frase tenga más de una palabra
        if (palabrasDeLaFrase.size() > 1) {
            for (int i = 0; i < palabrasDeLaFrase.size(); i++) {
                fraseSinEspaciosMuertos = fraseSinEspaciosMuertos
                        + palabrasDeLaFrase.get(i) + " ";
            }
            //Se elimina el espacio final
            fraseSinEspaciosMuertos =
                    fraseSinEspaciosMuertos.substring(0,
                    fraseSinEspaciosMuertos.length() - 1);
        } else if (palabrasDeLaFrase.size() == 1) {
            //Si tiene una sola palabra, esa será la frase
            fraseSinEspaciosMuertos = palabrasDeLaFrase.get(0);
        }
        return fraseSinEspaciosMuertos;
    }

    /**
     * Determina si una persona es menor de 21 años.
     *
     * @param fecha La fecha a analizar
     * @return true si es menor, false en caso contrario
     */
    public static boolean esMenor(Date fecha) {
        int edad = calcularEdad(fecha);

        if (edad < 21) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Calcula la edad de la persona.
     *
     * @return int edad, la edad
     */
    public static int calcularEdad(Date fechaIngresada) {
        if (fechaIngresada != null) {
            Calendar nacimiento = new GregorianCalendar(fechaIngresada.getYear(),
                    fechaIngresada.getMonth(), fechaIngresada.getDate());
            Calendar actual = new GregorianCalendar();

            int edad = actual.get(Calendar.YEAR) -
                    nacimiento.get(Calendar.YEAR) - 1900;
            if ((nacimiento.get(Calendar.MONTH) > actual.get(Calendar.MONTH))
                    || (nacimiento.get(Calendar.MONTH) ==
                    actual.get(Calendar.MONTH)
                    && nacimiento.get(Calendar.DAY_OF_MONTH) >
                    actual.get(Calendar.DAY_OF_MONTH))) {
                edad--;
            }
            return edad;
        } else {
            return 100;
        }
    }

    /**
     * Dado el documento separa el tipo y lo retorna.
     *
     * @param documento El documento
     * @return El tipo
     */
    public static String separarTipoDeDocumento(String documento) {
        String tipo = "";

        if (!documento.equals("")) {
            String[] componentes = documento.split(" ");

            //Obtengo el primer campo
            tipo = componentes[0];
        } else {
            tipo = "";
        }

        return tipo;
    }

    /**
     * Dado el documento separa el numero y lo retorna.
     *
     * @param documento El documento
     * @return El número
     */
    public static String separarNumeroDeDocumento(String documento) {
        String numero = "";
        if (!documento.equals("")) {
            String[] componentes = documento.split(" ");

            //Obtengo el primer campo
            numero = componentes[1];
        } else {
            numero = "";
        }

        return numero;
    }

    /**
     * Dado el domicilio separa la calle y la retorna.
     *
     * @param domicilio La cadena de texto domicilio completa
     * @return La calle
     */
    public static String separarCalle(String domicilio) {
        String calle = "";

        String[] componentes = domicilio.split(";");

        if (componentes.length != 0) {
            //Obtengo el primer campo
            calle = componentes[0];
        }
        return calle;
    }

    /**
     * Dado el domicilio separa el piso y lo retorna.
     *
     * @param domicilio La cadena de texto domicilio completa
     * @return El piso
     */
    public static String separarPiso(String domicilio) {
        String piso = "";

        String[] componentes = domicilio.split(";");

        if (componentes.length > 1) {
            //Obtengo el segundo campo
            piso = componentes[1];
        }
        return piso;
    }

    /**
     * Dado el domicilio separa el departamento y lo retorna.
     *
     * @param domicilio La cadena de texto domicilio completa
     * @return El departamento
     */
    public static String separarDepartamento(String domicilio) {
        String departamento = "";

        String[] componentes = domicilio.split(";");

        if (componentes.length > 2) {
            //Obtengo el tercer campo
            departamento = componentes[2];
        }
        return departamento;
    }

    /**
     * Dado la cadena fecha y hora separa la hora y la retorna.
     *
     * @param horaYFecha La cadena de texto fecha y hora completa
     * @return La hora
     */
    public static String separarTiempo(String horaYFecha) {
        String tiempo = "";

        String[] componentes = horaYFecha.split(" ");

        //Obtengo el tercer campo
        tiempo = componentes[3];
        
        return tiempo;
    }

    /**
     * Dado la hora separa la hora la retorna.
     *
     * @param horaYFecha La cadena de texto de hora completa
     * @return La hora
     */
    public static int separarHoras(String horaYFecha) {
        String hora = "";

        String[] componentes = horaYFecha.split(":");

        //Obtengo el primer campo
        hora = componentes[0];

        return Integer.valueOf(hora);
    }

    /**
     * Dado la hora separa los minutos la retorna.
     *
     * @param horaYFecha La cadena de texto de hora completa
     * @return Los minutos
     */
    public static int separarMinutos(String horaYFecha) {
        String minutos = "";

        String[] componentes = horaYFecha.split(":");

        //Obtengo el segundo campo
        minutos = componentes[1];

        return Integer.valueOf(minutos);
    }

    /**
     * Dado la hora separa los segundos y los retorna.
     *
     * @param horaYFecha La cadena de texto de hora completa
     * @return Los segundos
     */
    public static int separarSegundos(String horaYFecha) {
        String segundos = "";

        String[] componentes = horaYFecha.split(":");

        //Obtengo el tercer campo
        segundos = componentes[2];

        return Integer.valueOf(segundos);
    }

    /**
     * Dado el el objeto Cie9mc, toma el código del objeto y separa el número
     * retornarnandolo.
     *
     * @param cie9mc El objeto Cie9mc
     * @return El número
     */
    public static int separarNumeroCodigoCie9mc(Cie9mc cie9mc) {
        if (cie9mc != null) {
            int numero;

            String[] componentes = cie9mc.getCodigoCie9mc().split("\\.");

            //Obtengo el segundo campo
            numero = Integer.valueOf(componentes[1]);

            return Integer.valueOf(numero);
        } else {
            return -1;
        }
    }

    /**
     * Retorna un vector mergeado de dos vectores recibidos.
     * 
     * @param vectorUno El vector 1
     * @param vectorDos El vector 2
     * @return El vector resultante
     */
    public static Vector mergeVectores (Vector vectorUno, Vector vectorDos) {
        Vector retorno = new Vector();
        int size;

        if (vectorUno == null) {
            return vectorDos;
        } else if (vectorDos == null) {
            return vectorUno;
        } else if (vectorUno.size() < vectorDos.size()) {
            size = vectorDos.size();
            retorno = vectorDos;

            for (Object objecto : vectorUno) {
                boolean agregar = true;
                
                for (int i = 0; i < size ; i++) {
                    if (vectorDos.elementAt(i).equals(objecto)) {
                        agregar = false;
                    }                    
                }
                if (agregar) {
                    retorno.add(objecto);
                }
            }
            
        } else {
            size = vectorUno.size();
            retorno = vectorUno;

            for (Object objecto : vectorDos) {
                boolean agregar = true;

                for (int i = 0; i < size; i++) {
                    if (vectorUno.elementAt(i).equals(objecto)) {
                        agregar = false;
                    }
                }
                if (agregar) {
                    retorno.add(objecto);
                }
            }
        }

        return retorno;
    }

    public static Vector unirVectores (Vector vectorUno, Vector vectorDos) {
        Vector vectorUnion = new Vector();

        if (vectorUno == null && vectorDos == null) {
            return null;
        } else if (vectorUno != null && vectorDos == null) {
            return vectorUno;
        } else if (vectorUno == null && vectorDos != null) {
            return vectorDos;
        } else {
            vectorUnion = vectorUno;
            for (int i = 0; i < vectorDos.size(); i++) {
                vectorUnion.add(vectorDos.get(i));
            }
        }
        return vectorUnion;
    }

    /**
     * Convierte una cadena de string a un objeto float, basicamente reemplazando
     * la coma del string por un punto decimal.
     *
     * @param s La cadena a convertir
     * @return El objeto Float resultante
     */
    public static Float stringToFloat(String s) {
        return Float.valueOf(s.replaceAll(",", "."));
    }

    /**
     * Convierte un objeto Float a una cadena de string, basicamente reemplazando
     * el punto decimal por la coma.
     *
     * @param f El objeto float a convertir
     * @return La cadena String resultante
     */
    public static String floatToString(float f) {
        return (Float.toString(f)).replace(".", ",");
    }

    /**
     * Donde encuentra un apostrofo los reemplaza por dos.
     *
     * @param ruta La ruta
     * @return La ruta modificada
     */
    public static String reemplazarUnApostrofoPorDosApostrofos(String ruta) {
        return StringUtils.replace(ruta, "\'", "\'\'");
    }

    /**
     * Donde encuentra una barra invertida la reemplaza por dos.
     *
     * @param ruta La ruta
     * @return La ruta modificada
     */
    public static String reemplazarUnaBarraInvertidaPorDosBarrasInvertidas(
            String ruta) {
        return StringUtils.replace(ruta, "\\", "\\\\");
    }

    /**
     * Donde encuentra dos barras invertidas las reemplaza por una.
     *
     * @param ruta La ruta
     * @return La ruta modificada
     */
    public static String reemplazarDosBarrasInvertidasPorUnaBarraInvertida(
            String ruta) {
        return StringUtils.replace(ruta, "\\\\", "\\");
    }
    
    /**
     * Genera un string aleatorio.
     *
     * @param longitud, el tamaño del string generado
     * @return
     */
    public static String generarStringAleatorio(int longitud) {
        char[] elementos = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
            'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

        char[] conjunto = new char[longitud];

        for (int i = 0; i < longitud; i++) {
            int el = (int) (Math.random() * 37);
            conjunto[i] = (char) elementos[el];
        }

        return new String(conjunto);
    }

}
